package com.example.sams.service;

import com.example.sams.domain.po.Admins;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.sams.domain.request.AddStudentsRequest;
import com.example.sams.domain.request.AddTeachersRequest;
import com.example.sams.domain.request.UpdateStudentsRequest;
import com.example.sams.domain.request.UpdateTeachersRequest;
import com.example.sams.domain.request.UpdateAdminRequest;
import com.example.sams.domain.vo.AdminUserVO;
import com.example.sams.utils.ResultUtil;

/**
 * <p>
 * 管理员表 服务类
 * </p>
 *
 * @author jinghong
 * @since 2025-11-04
 */


public interface IAdminsService extends IService<Admins> {

    /**
     * 获取所有学生信息
     * @return 学生列表
     */
    ResultUtil getAllStudents();

    /**
     * 添加学生信息
     * @param addStudentsRequest 添加学生信息请求
     * @return 添加结果
     */
    ResultUtil addStudents(AddStudentsRequest addStudentsRequest);

    /**
     * 获取所有教师信息
     * @return 教师列表
     */
    ResultUtil getAllTeachers();

    /**
     * 添加教师信息
     * @param addTeachersRequest 添加教师信息请求
     * @return 添加结果
     */
    ResultUtil addTeachers(AddTeachersRequest addTeachersRequest);

    /**
     * 更新学生信息
     * @param studentId 学生ID
     * @param request 更新学生信息请求
     * @return 更新结果
     */
    ResultUtil updateStudents(String studentId, UpdateStudentsRequest request);

    /**
     * 更新教师信息
     * @param teacherId 教师ID
     * @param request 更新教师信息请求
     * @return 更新结果
     */
    ResultUtil updateTeachers(String teacherId, UpdateTeachersRequest request);


    /**
     * 删除学生信息
     * @param studentId 学生ID
     * @return 删除结果
     */
    ResultUtil deleteStudents(String studentId);

    /**
     * 删除教师信息
     * @param teacherId 教师ID
     * @return ResultUtil
     */
    ResultUtil deleteTeachers(String teacherId);

    /**
     * 获取当前管理员信息
     * @param userId 用户ID
     * @return Result
     */
    ResultUtil getCurrentAdminInfo(String userId);

    /**
     * 更新管理员信息
     * @param userId 用户ID
     * @param request 更新请求
     * @return Result
     */
    ResultUtil updateAdminInfo(String userId, UpdateAdminRequest request);
}
